"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/17 8:33
@Description :  函数的基本定义

"""
'''
   用户输入两个数字，同时根据用户需求计算两个数字的数学运算结果
   1.提示用户请输入第一个数字
   2.提示用户请输入第二个数字
   3.提示用户请输入运算符, 给出运算结果
'''
n1 = float(input('请输入第一个数字:'))
n2 = float(input('请输入第二个数字:'))
operator = input('请输入运算符:')

#  判定用户输入的运算符
'''
if oper == '+':
    print(f'{num1} + {num2} = {num1 + num2}')
elif oper == '-':
    print(f'{num1} - {num2} = {num1 - num2}')
elif oper == '*':
    print(f'{num1} * {num2} = {num1 * num2}')
elif oper == '/':
    print(f'{num1} / {num2} = {num1 / num2}')

'''
''' 
需要实现以上的需求，按照目前学习的内容，可以将上面的编写的代码复制，粘贴在需要使用的位置
if oper == '+':
    print(f'{num1} + {num2} = {num1 + num2}')
elif oper == '-':
    print(f'{num1} - {num2} = {num1 - num2}')
elif oper == '*':
    print(f'{num1} * {num2} = {num1 * num2}')
elif oper == '/':
    print(f'{num1} / {num2} = {num1 / num2}')

注： 如果后续在代码编写的过程中，多处都需要使用该代码块，则需要不断的复制，就会造成代码的冗余 
出现代码冗余的主要原因： 编写的代码复用率差，无法复用

以上问题，可以通过python中函数的定义来解决， 函数可以将实现特定需求的代码进行封装
函数的基本语法：
   def 函数名(参数列表):
        封装实现特定功能的代码
'''


# 定义函数实现数据的数学运算
def calculator(num1, num2, oper):
    if oper == '+':
        print(f'{num1} + {num2} = {num1 + num2}')
    elif oper == '-':
        print(f'{num1} - {num2} = {num1 - num2}')
    elif oper == '*':
        print(f'{num1} * {num2} = {num1 * num2}')
    elif oper == '/':
        print(f'{num1} / {num2} = {num1 / num2}')


#  后续在这里可能会有很多行代码   函数调用方式
calculator(n1, n2, operator)

#  200  用户输入两个数字，同时根据用户需求计算两个数字的数学运算结果
number_1 = 2
number_2 = 3
op = '+'
# 再次调用函数
calculator(number_1, number_2, operator)


#   函数参数的使用   参数列表中声明的参数是形式参数
#  函数定义之后，不会自动执行，需要执行函数中的代码需要调用函数  函数名()
def fn1(number_1, number_2):
    print('======================')
    number_1 += 1
    number_2 += 2
    print(f'number_1={number_1},number_2 = {number_2}')


# 调用函数  参数 ：number_1, number_2   实参  实际参数
fn1(number_1, number_2)
print(f'number_1={number_1},number_2 = {number_2}')  # ? 2  3
